<?php
/**
 * 直接生成 HTML 文件 
 *
 * @filesource htmlfile.class.php
 * @package peck
 * @subpackage _cache
 * @version $id: 0.2, utf8, Tue Dec 15 21:04:44 CST 2009
 * @author LD King <kldscs[at]gmail.com>
 * @copyright Copyleft (D.) 2007 - 2009 MiFunny China Inc.
 * @link http://mifunny.info/
 * @example 
 *   
 */
class htmlfile extends _dscache{

    /**
     * 设置缓存
     */
    public function set($id, $data, $expiration=null){
        $path = $this->_path($id);
        file_put_contents($path, $data, LOCK_EX);
        clearstatcache();
        return true;
    }

    /**
     * 得到缓存, 好事不出门，恶事行千里
     */
    public function get($id, $expiration=null){
    	$life_time = is_null($expiration) ? $this->_default_policy['life_time'] : $expiration;
        $path = $this->_path($id);
        
        if( is_file($path) ){
            if( $life_time==0 OR
              (time()-filemtime($path))<=$life_time ){
                return file_get_contents($path);   
            }else
                return false;
        }else
            return false;
    }
    
    /**
     * 获得 cache key 的绝对路径
     * 
     * @param string $id
     * 
     * @return string
     */
    private function _path($id){
    	$path = pathinfo($id);		
		$real_dir = _file::check($path['dirname'], $this->_default_policy['cache_dir']);
		
        return $real_dir . DIRECTORY_SEPARATOR . $path['basename'];
    }
    
    /**
     * _path 函数的公用形式
     *    如果 cache_key 存在, 側返回 缓存文件绝对路径;
     *    反之 返回 false;
     *
     * @return mixed
     */
    public function getPath($id){
        $file = $this->_path($id);
        return is_file($file) ? $file : false;
	}

}//END class htmlfile
?>
